<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Java Service Wrapper - Java Service Wrapper Release Notes</title>
<style media="all" type="text/css">
            @import url("./style/wrapper.css");
        </style>
</head>
<body bgcolor="#eeeeff" marginheight="0" marginwidth="0" leftmargin="0" topmargin="0" alink="#023264" vlink="#023264" link="#525D76" text="#000000">
<map name="wrapperLogo">
<area href="http://wrapper.tanukisoftware.org" coords="90,90,88" shape="circle">
</map>
<map name="wrapperTitle">
<area href="http://www.tanukisoftware.com" coords="28,32,176,48" shape="rect">
</map>
<table cellpadding="0" cellspacing="0" width="100%" border="0">
<tr>
<td valign="top" width="180">
<table cellpadding="0" cellspacing="0" width="100%" border="0">
<tr>
<td width="180"><img usemap="#wrapperLogo" border="0" height="180" width="180" src="images/WrapperLogo.png"></td>
</tr>
<tr>
<td>
<table cellpadding="4" cellspacing="0" width="100%" border="0">
<tr>
<td nowrap="true">
<div id="menu">
<script language="JavaScript">//@@MENU_TOP@@</script>
<div>
<b>Essentials</b>
<div>
<a href="introduction.html">Introduction</a>
</div>
<div>
<a href="integrate.html">Integration Methods</a>
</div>
<div>
<a href="properties.html">Configuration Properties</a>
</div>
<div>
<a href="launch.html">Launching Your Application</a>
</div>
<div>
<b>
                        &gt;&gt;
                        <a href="donate.html">Show Your Support</a>
                        &lt;&lt;
                    </b>
</div>
<div>
<a href="sponsors.html">Sponsors</a>
</div>
</div>
<div>
<b>Documentation</b>
<div>
<a href="jmx.html">JMX Control</a>
</div>
<div>
<a href="security-model.html">Security Model</a>
</div>
<div>
<a href="example.html">Feature Examples</a>
</div>
<div>
<a href="debugging.html">Debugging Your Application</a>
</div>
<div>
<a href="troubleshooting.html">Troubleshooting</a>
</div>
<div>
<a href="faq.html">FAQ</a>
</div>
<div>
<a href="release-notes.html">Release Notes</a>
</div>
<div>
<a href="history.html">Project History</a>
</div>
<div>
<a href="javadocs.html">Javadocs API</a>
</div>
<div>
<a href="buttons.html">Buttons</a>
</div>
<div>
<a href="authors.html">Authors</a>
</div>
<div>
<a href="license.html">License</a>
</div>
</div>
<div>
<b>Download</b>
<div>
<a href="http://sourceforge.net/project/showfiles.php?group_id=39428&package_id=31591">Binaries</a>
</div>
<div>
<a href="http://sourceforge.net/project/showfiles.php?group_id=39428&package_id=33658">Source Code</a>
</div>
</div>
<div>
<b>Get Involved</b>
<div>
<a href="http://sourceforge.net/projects/wrapper/">Source Forge</a>
</div>
<div>
<a href="http://svn.sourceforge.net/viewvc/wrapper/">Subversion Repository</a>
</div>
<div>
<a href="http://sourceforge.net/tracker/?group_id=39428">Issue Tracking</a>
</div>
<div>
<a href="http://sourceforge.net/mail/?group_id=39428">Mailing Lists and Archives</a>
</div>
<div>
<a href="http://sourceforge.net/forum/?group_id=39428">Forums (Old)</a>
</div>
</div>
</div>
<script language="JavaScript">//@@MENU_BOTTOM@@</script>
<p>
<b>Hosted by:</b>
<br>
<a href="http://sourceforge.net/projects/wrapper/"><img alt="SourceForge" border="0" height="31" width="88" src="http://sourceforge.net/sflogo.php?group_id=39428"></a>
<br>
</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td><td valign="top" width="*">
<table cellpadding="0" cellspacing="0" width="100%" border="0">
<tr>
<td colspan="3"><img height="4" src="images/spacer.gif"></td>
</tr>
<tr>
<td align="center" height="90" colspan="2"><a href="http://wrapper.tanukisoftware.org"><img border="0" height="90" width="728" src="images/OfflineAd728x90.png"></a></td><td rowspan="5"><img width="4" src="images/spacer.gif"></td>
</tr>
<tr>
<td height="49" width="435"><img usemap="#wrapperTitle" border="0" height="49" width="435" src="images/WrapperTitle.png"></td><td valign="bottom" align="right" width="*"><a href="donate.html"><img border="0" height="16" width="300" src="images/DonationRequest.png"></a></td>
</tr>
<tr>
<td height="4" colspan="2"><img height="4" width="500" src="images/BorderTop.png"></td>
</tr>
<tr>
<td colspan="2">
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td valign="top" width="4"><img height="496" width="4" src="images/BorderLeft.png"></td><td bgcolor="#ffffff" valign="top" width="*" colspan="2">
<table cellpadding="4" cellspacing="0" width="100%" border="0">
<tr>
<td nowrap="true" align="center"><font zcolor="#115b77" color="#8888aa" size="5"><b>Java Service Wrapper Release Notes</b></font></td>
</tr>
<tr>
<td>
<title>Java Service Wrapper Release Notes</title>
    
    
<a name="3.2.3"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.2.3: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Add support for x86 Mac OS X distributions.
                </p>
            
</li>
            
<li>
                
<p>
                    The 3.2.2 Windows version was accidentally released with its MFC libraries
                    dynamically linked.  This meant that anyone who did not have VS8 installed
                    were not able to run the Wrapper due to missing DLLs.  This version fixes
                    that snafu by correctly using statically linked libraries as was done in
                    previous versions built with VS6.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1578554&group_id=39428&atid=425187">Bug #1578554</a>.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="3.2.2"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.2.2: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Correct a typo in the usage output of the WrapperStartStopApp.  Thanks to
                    Michael Giroux for pointing it out.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem on OSF1 systems where the backend socket was not listening
                    correctly due to a backlog of 0.  This was broken in 3.2.0.  Thanks to
                    Phillip Gussow for supplying a patch.
                </p>
            
</li>
            
<li>
                
<p>
                    Remove the com.silveregg.wrapper package classes that were deprecated in
                    version 3.0.0.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a potential problem in the UNIX script where the lock file permissions
                    were not being set correctly if the LOCKFILE and RUN_AS_USER variables are
                    specified but the group of the specified user could not be resolved.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the exit code returned by WrapperListener.stop was being
                    ignored in some cases.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the shell script would not work correctly when the
                    wrapper or its configuration files were located in a directory path
                    containing spaces.
                </p>
            
</li>
            
<li>
                
<p>
                    Apply a series of patches by Michael Saya to get the Windows 64 bit build
                    working.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem in UNIX versions where the TERM signal handler was being
                    disabled when a CHLD signal was received.
                </p>
            
</li>
            
<li>
                
<p>
                    Added support in UNIX versions for the HUP signal.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new
                    <a href="prop-signal-mode-hup.html">wrapper.signal.mode.hup</a>
                    property to let the user control what
                    happens when the Wrapper process receives an HUP signal
                </p>
            
</li>
            
<li>
                
<p>
                    Migrated the source to Subversion from CVS.  Did a bunch of cleanup in the
                    source, removing CVS specific tags.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem in UNIX versions were the pid file specified by the
                    <a href="prop-java-pidfile.html">wrapper.java.pidfile</a>
                    property contained the wrapper pid rather than the
                    jvm pid.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1565011&group_id=39428&atid=425187">Bug #1565011</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem in UNIX versions where the file specified by the
                    <a href="prop-java-pidfile.html">wrapper.java.pidfile</a>
                    property was not always being deleted when the JVM
                    process went away.
                </p>
            
</li>
            
<li>
                
<p>
                    A user encountered a JVM bug where calls to System.exit were resulting in
                    an IllegalThreadStateException being thrown.  Added some code to trap this
                    and shut down the JVM using other means to avoid a hang during shutdown.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a NullPointerException caused by users incorrectly implementing
                    an Integration Method #3 class and then calling WrapperManager.start with
                    a null value for the args parameter.
                </p>
            
</li>
            
<li>
                
<p>
                    Update the banner displayed by the Wrapper on startup to include a
                    copyright notice.  Please see the
                    <a href="license.html">license</a> page of the documentation
                    for details.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new 'Z' log format which will log the time to millisecond accuracy.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the JVM exit code was not being set correctly when
                    the JVM was shutdown using WrapperManager.stopImmediate().  The exit code
                    of the Wrapper was being set correctly through other means however.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a potential synchronization problem in the logging code if a JVM exits
                    with debug output enabled.
                </p>
            
</li>
            
<li>
                
<p>
                    Updated the WrapperListener.stop method javadocs to better explain the
                    exitCode value under certain exit modes.
                </p>
            
</li>
            
<li>
                
<p>
                    On UNIX versions, add a log message which records the signal that caused
                    the JVM process to exit when it terminates unexpectedly.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the
                    <a href="prop-on-exit-n.html">wrapper.on_exit.&lt;n&gt;</a>
                    property was not working correctly in some cases on UNIX.  With help
                    from Andreas Schafer.
                </p>
            
</li>
            
<li>
                
<p>
                    Add support for building the Wrapper with Visual Studio 8 for Windows.
                    Releases will now be done using this compiler.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a CRITICAL bug in the 3.2.0 and 3.2.1 Windows versions of the Wrapper
                    where the Wrapper would crash under rare circumstances when running as a
                    service.  If the service manager interrogated the service at the same
                    instant as the wrapper was pinging the JVM, the wrapper was sometimes
                    crashing due to a synchronization problem.   The problem did not exist
                    prior to 3.2.0.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1574537&group_id=39428&atid=425187">Bug #1574537</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a minor logging problem where the 'D' format was not displaying the
                    correct thread name for queued log messages.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="3.2.1"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.2.1: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Fix a problem with the solaris-sparc-64 makefile.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a solaris-x86-64 makefile.
                </p>
            
</li>
            
<li>
                
<p>
                    Merge in a patch by Hugo Weber to make it possible to configure the Wrapper
                    to pull the JRE from the system registry on windows.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a batch file bug added in 3.2.0 where the scripts would not function
                    correctly if the full path to the batch file contained spaces.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1450601&group_id=39428&atid=425187">Bug #1450601</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the message shown when a native library fails to load so the
                    exception message text is now shown in the log without having to enable
                    debug log output.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the UNIX shell script to be more informative if the script is unable
                    to locate a wrapper binary due to a executable bit permission problem.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a minor permission problem with the build for the delta-pack.
                </p>
            
</li>
            
<li>
                
<p>
                    Commit a patch by Juergen Hermann to make the error shown when realpath
                    fails clearer.
                </p>
            
</li>
            
<li>
                
<p>
                    Add the ability to use a default wrapper.conf file that is in the same
                    directory as the wrapper binary.  The file will be named based on the
                    name of the wrapper binary.
                </p>
            
</li>
            
<li>
                
<p>
                    Synchronize the command line so that both the Windows and UNIX versions
                    are now the same.  The old command line syntaxes are now supported
                    everywhere so there will be no compatibility problems.
                </p>
            
</li>
            
<li>
                
<p>
                    It is no longer possible to specify arguments using the '/c' syntax.
                    This was undocumented so hopefully it is not being used.  The documented
                    '-c' syntax must now be used.  The change was necessary to synchronize
                    the command line between UNIX and windows platforms.
                </p>
            
</li>
            
<li>
                
<p>
                    The 32-bit HP-UX 3.2.0 build was generating a libwrapper.so file rather
                    than libwrapper.sl.
                </p>
            
</li>
            
<li>
                
<p>
                    Make the WrapperManager.setConsoleTitle, getWrapperPID, and getJavaPID
                    methods available through JMX.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a state engine problem introduced in 3.2.0 which was causing the
                    <a href="prop-on-exit-n.html">wrapper.on_exit.&lt;n&gt;</a>
                    properties to be ignored in most cases.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a potential problem that could have caused crashes when debug logging
                    was enabled.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where signals were not being handled correctly on some UNIX
                    platforms, including AIX.  This was making it impossible to shutdown the
                    wrapper cleanly with the TERM signal.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1477619&group_id=39428&atid=425187">Bug #1477619</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Add new <a href="props-envvars.html#default-definitions">default environment variables</a>
                    which can be referenced in a configuration file to configure platform
                    specific directories and file names.  WRAPPER_OS, WRAPPER_ARCH, and
                    WRAPPER_BITS.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a -v argument to make it possible to request the version from a wrapper
                    binary.
                </p>
            
</li>
            
<li>
                
<p>
                    Add support for registering the WrapperManager MBean with the
                    PlatformMBeanServer when run on a 1.5+ JVM.  See the
                    <a href="jmx.html">JMX</a> section in the documentation for details.
                </p>
            
</li>
            
<li>
                
<p>
                    Rework the way timeout properties are handled.  Values of 0 now actually
                    disable the timeouts rather than setting them to a large value.  To avoid
                    overflow problems when converting to internal timer ticks, timeouts are now
                    restricted to a maximum of 20 days, or 1728000 seconds.  Change affects the
                    <a href="prop-cpu-timeout.html">wrapper.cpu.timeout</a>,
                    <a href="prop-startup-timeout.html">wrapper.startup.timeout</a>,
                    <a href="prop-ping-timeout.html">wrapper.ping.timeout</a>,
                    <a href="prop-shutdown-timeout.html">wrapper.shutdown.timeout</a>,
                    and <a href="prop-jvm-exit-timeout.html">wrapper.jvm_exit.timeout</a>
                    properties.  For values less than 20 days, there should be no change in
                    functionality.
                </p>
            
</li>
            
<li>
                
<p>
                    Add support for debuggers.  The Wrapper will now show a warning on startup
                    and then again the first time a timeout occurs.  But all timeouts will be
                    ignored.  This is to avoid problems with the Wrapper restarting a suspended
                    JVM in the middle of a debugging session.  The wrapper enters this mode if
                    the <a href="prop-java-command.html">wrapper.java.command</a> ends
                    with the string "jdb" or "jdb.exe", or the "-Xdebug" parameter is passed to
                    the JVM.
                </p>
            
</li>
            
<li>
                
<p>
                    Add 'athlon' to the list of supported architectures.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the environment variables loaded when a service was
                    started were always the system environment even if the service was running
                    as a specific account.  The environment of a specific account will now be
                    loaded on top of the system environment if the USERNAME environment
                    variable is set by the system.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1491138&group_id=39428&atid=425187">Bug #1491138</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Added new <a href="prop-ntservice-pausable.html">wrapper.ntservice.pausable</a>
                    <a href="prop-ntservice-pausable-stop-jvm.html">wrapper.ntservice.pausable.stop_jvm</a>
                    properties to make it possible to pause and resume the Wrapper when installed
                    as a Windows service.
                </p>
            
</li>
            
<li>
                
<p>
                    Added new Pause and Resume batch files as well as modified the command batch
                    file to support pause and resume.
                </p>
            
</li>
            
<li>
                
<p>
                    Added PAUSE and RESUME commands for use by the
                    <a href="prop-commandfile.html">wrapper.commandfile</a> property.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem with the <a href="prop-pidfile.html">wrapper.pidfile</a>,
                    <a href="prop-java-pidfile.html">wrapper.java.pidfile</a>,
                    <a href="prop-anchorfile.html">wrapper.anchorfile</a>,
                    <a href="prop-commandfile.html">wrapper.commandfile</a>,
                    <a href="prop-statusfile.html">wrapper.statusfile</a>,
                    <a href="prop-java-statusfile.html">wrapper.java.statusfile</a>,
                    <a href="prop-java-idfile.html">wrapper.java.idfile</a>,
                    and <a href="prop-umask.html">wrapper.lockfile.umask</a>
                    properties where forward slashes in paths were not being changed to back
                    slashes on Windows versions.
                </p>
            
</li>
            
<li>
                
<p>
                    Simplify the code used to load a native library by using the
                    System.mapLibraryName method rather than doing the same thing manually.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new <a href="prop-syslog-facility.html">wrapper.syslog.facility</a>
                    property which makes it possible to specify the syslog facility on UNIX systems.
                    Thanks for the patch from Bruce Pennypacker.
                </p>
            
</li>
            
<li>
                
<p>
                    Removed the custom thread counting used to keep track of when the wrapped
                    Java application has completed.  It is now done in a different way that
                    will work on all Java implementations without requiring any special
                    consideration of the current JVM.   Deprecated the
                    <a href="prop-monitor-thread-count.html">wrapper.monitor_thread_count</a>
                    and <a href="prop-thread-count-delay.html">wrapper.thread_count_delay</a>
                    properties.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1470265&group_id=39428&atid=425187">Bug #1470265</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    The <a href="javadocs.html">WrapperStartStopApp helper class</a> still
                    requires thread counting if the stopWait parameter is set to true.  Previous
                    versions all hard coded the system thread count to 1 which worked for most
                    JVMs.  A new system property,
                    org.tanukisoftware.wrapper.WrapperStartStopApp.systemThreadCount, was added
                    to make it possible to customize.  It currently defaults to 1.
                </p>
            
</li>
            
<li>
                
<p>
                    Make it possible to extend the WrapperSimpleApp and WrapperStartStopApp
                    helper classes.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1510274&group_id=39428&atid=425190">Feature Request #1510274</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Add warning messages if the old org.silveregg.wrapper package classes are
                    still being used.  They will be removed in the next release.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="3.2.0"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.2.0: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Rework the release cycle so that the wrapper.jar file released for all
                    platforms is now built on the same machine.  This resolves a few
                    incompatibility problems caused by jars built on very new JVMs but run
                    on old JVMs.
                </p>
            
</li>
            
<li>
                
<p>
                    Add additional output when the JVM can not be launched due to security
                    restrictions on Windows.
                </p>
            
</li>
            
<li>
                
<p>
                    Greatly improved the performance of file logging.  On a windows test machine
                    3.1.2 could log 67210 lines of output in 20 seconds with a 80-15% split
                    between the Wrapper and JVM process CPU usage.  It now outputs 215214 lines
                    with a 64-34% split, also showing less load on the system process.  This is
                    a 220% increase in performance.  In both cases, the JVM was completely idle
                    other than the console output which makes the Wrapper appear to be a bit of
                    a CPU hog.  In fact it is the only process doing any work in this case.
                    This improvement was accomplished by keeping the log file open unless idle.
                    The idle time can be controlled using the new
                    <a href="prop-logfile-inactivity-timeout.html">wrapper.logfile.inactivity.timeout</a>
                    property.  The speed increase on UNIX platforms was much smaller at around 10%.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new property, <a href="prop-disable-restarts.html">wrapper.disable_restarts</a>,
                    which will completely disable the Wrapper's ability to restart JVMs.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a pair of new properties, <a href="prop-port.html">wrapper.port.min</a>
                    and <a href="prop-port.html">wrapper.port.max</a>, which make it
                    possible to define the port range used when a specific
                    <a href="prop-port.html">wrapper.port</a> is not specified.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where certain characters like umlauts were being stripped from
                    property values.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1049528&group_id=39428&atid=425187">Bug #1049528</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Make the PIDs of the Wrapper and Java process easier to access by providing
                    a new pair os system properties; wrapper.pid and wrapper.java.pid, as well
                    as a new pair of methods;
                    <a href="javadocs.html">WrapperManager.getWrapperPID()</a> and
                    <a href="javadocs.html">WrapperManager.getJavaPID()</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new <a href="javadocs.html">WrapperEventListener</a> class which
                    can be implemented to receive a wide variety of events from the Wrapper.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a <a href="javadocs.html">WrapperServiceControlEvent</a> class which
                    will report any service control codes received by the Wrapper as it is running
                    as an NT service.   This was added to make it possible for other applications
                    to sent custom codes to the Wrapper using the Window Service Manager.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a <a href="javadocs.html">WrapperManager.listServices()</a> method
                    which can be used to obtain thestatus of all services on a Windows system.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a <a href="javadocs.html">WrapperManager.sendServiceControlCode()</a>
                    method which makes it possible to start, stop, pause, continue, any service on
                    Windows systems.  It is alsopossible to send custom user codes via the service
                    manager.
                </p>
            
</li>
            
<li>
                
<p>
                    Add comments in the sh script to support the chkconfig command.
                </p>
            
</li>
            
<li>
                
<p>
                    Implement the ability to read from standard input via System.in.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1024693&group_id=39428&atid=425190">Feature Request #1024693</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Made the tick based timer the default by changing the default value of the
                    <a href="prop-use-system-time.html">wrapper.use_system_time</a>
                    property to false.  Most users should see an
                    improvement in reliability under heavy loads with this new setting.  If you
                    have extended any timeouts in the past, you may wish to try going back to
                    defaults as they may no longer need to be extended.  
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new <a href="prop-restart-reload-configuration.html">wrapper.restart.reload_configuration</a>
                    property which causes the Wrapper to reload its configuration file immediately
                    before a JVM restart.  Properties which can not be reloaded have comments
                    stating that fact in their documentation.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=981060&group_id=39428&atid=425190">Feature Request #981060</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem in the UNIX shell script which was preventing the script from
                    locating the PID and anchor files when the
                    <a href="prop-working-dir.html">wrapper.working.dir</a> property was
                    used.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify UNIX versions so that the wrapper binary will now force its working
                    directory to the location of the wrapper binary.   This change was made to
                    make the UNIX version work the same way as the Windows version and thus make
                    configuration files that modify their working directory work correctly on
                    a cross platform basis.  Users which have been using the scripts supplied
                    with the Wrapper should not encounter any problems.  Other users may require
                    slight changes to their configuration file to deal with the new way that the
                    Wrapper deals with its initial working directory.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new method <a href="javadocs.html">WrapperManager.getProperties()</a>
                    which makes it possible to access any property in the Wrapper configuration
                    file.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where TERM signals were not being correctly ignored by the
                    JVM process on UNIX platforms even if the
                    <a href="prop-ignore-signals.html">wrapper.ignore_signals</a> property
                    was set to true.   Earlier versions of the Wrapper would generate a
                    WRAPPER_CTRL_SHUTDOWN_EVENT when a TERM signal was received.   On Windows
                    that signal should never be ignored.  To resolve this a new
                    WRAPPER_CTRL_TERM_EVENT was added making it possible to selectively ignore
                    the TERM signals.  This change may affect user implementations of the
                    <a href="javadocs.html">WrapperListener.controlEvent()</a> method.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1086344&group_id=39428&atid=425187">Bug #1086344</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    The Windows version has a feature which allows the user to immediately kill
                    the Wrapper and its Java application without waiting for a clean shutdown
                    by pressing CTRL-C twice.  Windows sends the CTRL-C signal to both the
                    Wrapper and Java processes.  Due to a rare timing problem, it was possible
                    for the Java process to get the signal first and initialize a shutdown
                    before the Wrapper could respond to the signal.  In this case the Wrapper
                    was interpreting this as a second CTRL-C signal even though the user only
                    pressed it once.
                </p>
            
</li>
            
<li>
                
<p>
                    If the wrapper.anchorfile or wrapper.pidfile properties are used on Windows
                    they were being unintentionally deleted if the -t, -p, -i, or -r commands
                    were used while another Wrapper instance was running.  In the case of the
                    anchor file, this would result in the Wrapper being shutdown unintentionally.
                    This was not an issue on non-Windows versions.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1108517&group_id=39428&atid=425187">Bug #1108517</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a security problem where the value of the
                    <a href="prop-ntservice-account.html">wrapper.ntservice.account</a>
                    and <a href="prop-ntservice-password.html">wrapper.ntservice.password</a>
                    properties were being stored in plain text within the registry if they were
                    specified on the command line when installing the Wrapper as a Windows service.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1110183&group_id=39428&atid=425187">Bug #1110183</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a pair of properties <a href="prop-ntservice-password.html#prompt">wrapper.ntservice.password.prompt</a> and
                    <a href="prop-ntservice-password.html#mask">wrapper.ntservice.password.prompt.mask</a>
                    which which will cause the Wrapper to prompt the user for an account
                    password when it is being installed as an NT service.
                </p>
            
</li>
            
<li>
                
<p>
                    Added system properties to make it possible to configure whether or not
                    the <a href="javadocs.html">WrapperSimpleApp</a> and
                    <a href="javadocs.html">WrapperStartStopApp</a> helper classes will wait
                    for the configured main methods to complete before reporting that the
                    application has started.  See the <a href="javadocs.html">javadocs</a>
                    for these classes for more details.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the HP-UX build so that it now dynamically links with the pthread
                    library.  This was to make the binaries work with HP-UX 11.00.  Thanks to
                    Sun Kun Choi for the patch.
                </p>
            
</li>
            
<li>
                
<p>
                    Add new <a href="prop-statusfile.html">wrapper.statusfile</a> and
                    <a href="prop-java-statusfile.html">wrapper.java.statusfile</a>
                    properties which can be used by external applications to monitor the
                    internal state of the Wrapper or JVM at any given time.  These will not
                    be useful to most users.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new <a href="prop-commandfile.html">wrapper.commandfile</a>
                    property which can be used by external applications to control the
                    Wrapper and its JVM.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new <a href="prop-java-idfile.html">wrapper.java.idfile</a>
                    property which can be used by external applications to monitor the
                    internal state of the JVM at any given time.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a warning on startup if the JVM has a SecurityManager set but the
                    wrapper.jar has not been granted the AllPermissions permission.  Failure
                    to do so will almost certainly lead to the Wrapper throwing a number of
                    errors and this helps to point out the cause.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a security model which protects most Wrapper method calls when a
                    SecurityManager has been registered.  See the
                    <a href="security-model.html">Security Model</a> section
                    for more details.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new pair of batch files which can be used to start and stop the
                    Wrapper when installed as a service.
                </p>
            
</li>
            
<li>
                
<p>
                    Add new -q and -qs commands to the Windows version of the Wrapper which
                    make it possible to query the currently installed status of the service.
                    See the <a href="launch-win.html#status">Query Service Status</a>
                    section for more details.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the
                    <a href="prop-java-library-path-append-system-path.html">wrapper.java.library.path.append_system_path</a>
                    property was not working correctly on Windows when the system PATH
                    contained quotes.
                    <a href="http://sourceforge.net/tracker/?func=detail&atid=425187&aid=1238726&group_id=39428">Bug #1238726</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the usage output of the Wrapper on all platforms so the Wrapper's
                    version is now included.  It was not previously possible to get the version
                    of the Wrapper being used without launching a JVM.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a pair of new methods <a href="javadocs.html">WrapperManager.stopAndReturn()</a>
                    and <a href="javadocs.html">WrapperManager.restartAndReturn()</a> which
                    make it possible for code to stop or restart the JVM and then continue until
                    the JVM is shutdown.  This can be useful for shutdowns initiated within
                    places like servlets, whose operation is expected to complete.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem on UNIX where the child JVM was sometimes leaving around
                    zombie processes after a restart.  The SIGCHLD signal was not being handled
                    correctly.  Thanks to Traun Leyden for the patch.
                    <a href="http://sourceforge.net/tracker/?func=detail&atid=425187&aid=1291201&group_id=39428">Bug #1291201</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Implement the ability to catch control events using the WrapperEventLisener.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=836975&group_id=39428&atid=425190">Feature Request #836975</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Add new <a href="prop-jvm-port.html">wrapper.jvm.port</a>,
                    <a href="prop-jvm-port.html">wrapper.jvm.port.min</a>, and
                    <a href="prop-jvm-port.html">wrapper.jvm.port.max</a>
                    properties which make it possible to control the port the JVM uses to open
                    a connection back to the JVM.  The Wrapper uses to leave this up to the
                    OS, but some users were having problems with the default conflicting with
                    other ports.
                </p>
            
</li>
            
<li>
                
<p>
                    Switch from using ftime() to gettimeofday() on UNIX platforms to work around
                    a problem where the Wrapper would not run on new versions of OSX because
                    they deprecated the ftime() function call.  Thanks for the patch by
                    Michael Macaluso.
                    <a href="http://sourceforge.net/tracker/?func=detail&atid=425187&aid=1313162&group_id=39428">Bug #1313162</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Remove the shutdown timeout from the UNIX shell script.  It is not needed
                    and can cause a zombie JVM if the wrapper's internal shutdown timeout was
                    longer than that of the shell script.
                </p>
            
</li>
            
<li>
                
<p>
                    Add the ability to specify integer property values in base 8 or 16 in
                    addition to base 10.  Base 8 values start with a '0' and base 16 values
                    start with a '0x'.
                </p>
            
</li>
            
<li>
                
<p>
                    Make it possible to set the umask on all files created by the Wrapper
                    as well as the default umask of files created by the JVM.  Added new
                    <a href="prop-java-umask.html">wrapper.umask</a>,
                    <a href="prop-java-umask.html">wrapper.java.umask</a>,
                    <a href="prop-java-umask.html">wrapper.pidfile.umask</a>,
                    <a href="prop-java-umask.html">wrapper.lockfile.umask</a>,
                    <a href="prop-java-umask.html">wrapper.java.pidfile.umask</a>,
                    <a href="prop-java-umask.html">wrapper.java.idfile.umask</a>,
                    <a href="prop-java-umask.html">wrapper.statusfile.umask</a>,
                    <a href="prop-java-umask.html">wrapper.java.statusfile.umask</a>,
                    <a href="prop-java-umask.html">wrapper.anchorfile.umask</a>,
                    and <a href="prop-java-umask.html">wrapper.logfile.umask</a>
                    properties.
                </p>
            
</li>
            
<li>
                
<p>
                    Improve the message when the native library can not be loaded to make mention
                    of the possibility of a 32/64 bit mismatch.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new <a href="prop-monitor-thread-count.html">wrapper.monitor_thread_count</a>
                    property which makes it possible to disable the Wrapper's counting of
                    non-daemon threads and thus the shutting down of the JVM when they have all
                    completed.
                </p>
            
</li>
            
<li>
                
<p>
                    Add support for BELOW_NORMAL and ABOVE_NORMAL options to the
                    <a href="prop-ntservice-process-priority.html">wrapper.ntservice.process_priority</a> property.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1373922&group_id=39428&atid=425190">Feature Request #1373922</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Ignore '#' characters which are included within double quotes in the value
                    of a property in the configuration file.  Unquoted values must be escaped
                    with a second '#' characters or it will be interpreted as a comment.
                </p>
            
</li>
            
<li>
                
<p>
                    Display the Wrapper banner in the JVM earlier so that it is displayed
                    even where there are startup errors.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the WrapperSimpleApp and WrapperStartStopApp classes so that the
                    WrapperManager is always initialized immediately.  This makes the output
                    clearer in the event of startup errors.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the Windows ServiceManager was not correctly reporting
                    a startup error if a service failed on startup.  The service was being
                    reported as having started even though it failed to start.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem on UNIX versions where the Wrapper would go into a recursive
                    state of attempting to launch the JVM from failed child processes if there
                    was any problems executing the configured java process.
                </p>
            
</li>
            
<li>
                
<p>
                    Rework the way the RUN_AS_USER setting in the UNIX shell script works so
                    the specified user is now set regardless of the command being executed.
                    To make sure the user never has to enter the password twice when running
                    the script, it now recurses after changing the user.  The script then
                    runs entirely as the configured user.
                </p>
            
</li>
            
<li>
                
<p>
                    Improve the message that is displayed when attempting to start, stop, or
                    remove a windows service which is not installed.
                </p>
            
</li>
            
<li>
                
<p>
                    Add new <a href="prop-lockfile.html">wrapper.lockfile</a> property
                    which makes it possible to specify a lock file containing a pid.
                </p>
            
</li>
            
<li>
                
<p>
                    Modified the sh script so it now creates a lock file on startup in the
                    /var/lock/subsys directory if it exists.  This is needed by fedora systems
                    on shutdown.
                </p>
            
</li>
            
<li>
                
<p>
                    Store javadocs in tar distibutions in a nested tar file to avoid problems
                    with long filenames in some tar distributions.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem with the WrapperSimpleApp and WrapperStartStopApp helper
                    classes where on heavily loaded systems it was possible for the Wrapper
                    to get a running thread count of 0 and shutdown before the main thread
                    had a chance to be started.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new <a href="prop-thread-count-delay.html">wrapper.thread_count_delay</a>
                    property which will force the WrapperManager to wait the specified number
                    of seconds before it begins to check the number of running threads.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the <a href="prop-java-library-path-append-system-path.html">wrapper.java.library.path.append_system_path</a>
                    property was appending the PATH rather than the LD_LIBRARY_PATH environment
                    variable on Unix systems.  PATH is correct for Windows systems.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new wrapper.logfile.rollmode property which makes it possible to
                    control how and when the logfile is rolled.  Feature Requests
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=864463&group_id=39428&atid=425190">#864463</a>,
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1085097&group_id=39428&atid=425190">#1085097</a>,
                    and <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=1085850&group_id=39428&atid=425190">#1085850</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem on Linux where the test for the status of the Java child
                    process would sometimes fail causing the Wrapper to shutdown with the
                    error "Critical error: wait for JVM process failed (No child processes)"
                    rather than restart the child JVM.  Users who encountered this problem
                    found it easy to reproduce, but it only happened on some systems.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the way the UNIX shell script tests for the existence of a process
                    matching the pid in an existing pid file.  It now verifies the process
                    command as well as the pid to fix a system reboot problem where a stale
                    pid has been reused by another application, making the script think the
                    wrapper was already running.
                </p>
            
</li>
            
<li>
                
<p>
                    Add support for the <a href="http://gcc.gnu.org/java/">GNU libgcj JVM</a>.
                    Like JRocket, it requires slightly different thread counting.
                </p>
            
</li>
            
<li>
                
<p>
                    Add support for Linux 64-bit PPC and Solaris 32-bit x86 versions.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new set.default.ENV syntax to the configuration file making it
                    possible to environment variable values which do not overwrite existing
                    values, ie. to specify a default value.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new <a href="prop-console-flush.html">wrapper.console.flush</a>
                    property which forces the wrapper to explicitly flush stdout after
                    each line of log output.
                </p>
            
</li>
            
<li>
                
<p>
                    Change the error shown when the JVM shuts down prematurely during a
                    shutdown to a warning message.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the Wrapper would show the following error message
                    if user code called System.exit from within the WrapperListener.stop
                    callback method.  This would happen if the stop class's main method
                    registered with the WrapperStartStopApp called System.exit.
                    "JVM exited unexpectedly while stopping the application."
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=945976&group_id=39428&atid=425187">Bug #945976</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new <a href="prop-syslog-ident.html">wrapper.syslog.ident</a>
                    property which makes it possible to specify the identity used in syslog
                    entries on UNIX.  This was possible in older versions but was set using the
                    <a href="prop-ntservice-name.html">wrapper.ntservice.name</a> property.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1432855&group_id=39428&atid=425187">Bug #1432855</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Add support for MacOSX Universal Binary distributions.
                </p>
            
</li>
            
<li>
                
<p>
                    Add support for Delta Pack distributions.  This is a distribution that
                    contains
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="3.1.2"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.1.2: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Modify the way boolean system properties are resolved by the WrapperManager
                    so it is now possible to set them to true or false rather than assuming they
                    are true if set.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where some localized error messages were not having their
                    tokens replaced correctly.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem when using the WrapperStartStopApp helper class.  The usage
                    text was incorrectly being displayed in the console if an exception was
                    thrown while executing the main method of the configured stop class.  This
                    did not change the functionality of the application, but it did cause some
                    confusion.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem on Windows where a library path or class path which ended in
                    a backslash was preventing the Wrapper from launching the JVM.  The Windows
                    OS was using the backslash to escape the quote used to close the path.  The
                    fix was to add a second backslash where needed.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new <a href="prop-java-command-loglevel.html">wrapper.java.command.loglevel</a>
                    property which makes it possible to control the log level of the generated
                    java command.
                </p>
            
</li>
            
<li>
                
<p>
                    Add support for escaped quotes when stripping quotes on UNIX for the
                    <a href="prop-java-additional-n.html">wrapper.java.additional.&lt;n&gt;</a> and
                    <a href="prop-app-parameter-n.html">wrapper.app.parameter.&lt;n&gt;</a>
                    properties.
                </p>
            
</li>
            
<li>
                
<p>
                    Change the default value of <a href="prop-jvm-exit-timeout.html">wrapper.jvm_exit.timeout</a>
                    from 5 to 15 seconds.  The old default was too fast for some applications
                    which take a while to exit.  Applications which were exiting promptly will
                    not see any difference.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the JVM would restart at certain times when using the
                    system time based timer due to an overflow error.  This problem was
                    introduced in 3.1.0.  Due to a separate bug in 3.1.0, the Wrapper would
                    shutdown rather than simply restarting the JVM as was happening in 3.1.1.
                    The last restart happened on Aug 21, 2004.  It will next occur Oct 10, 2004
                    and repeat at regular intervals.  There are no problems when using the new
                    Tick based timer.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1014405&group_id=39428&atid=425187">Bug #1014405</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Correct the <a href="prop-logfile-maxsize.html">wrapper.logfile.maxsize</a>
                    property so that a a kilobyte is now 1024 rather than 1000, and a megabyte
                    is a megabyte.  We aren't a hard drive manufacturer after all.
                </p>
            
</li>
            
<li>
                
<p>
                    Add try-catch blocks around all thread entry points in the Windows version.
                    This has always been done in the main function, but these blocks will help
                    to narrow down the cause of problems should they ever be encountered in
                    control or service handlers.
                </p>
            
</li>
            
<li>
                
<p>
                    Centralize shutdown code on UNIX version in an appExit method as was already
                    being done for Windows versions.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the build.sh was not correctly using the included ant
                    if an ANT_HOME environment variable was defined.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new <a href="prop-single-invocation.html">wrapper.single_invocation</a>
                    property which will prevent multiple invocations of an application from being
                    started on Windows platforms.  The shell script handles this on UNIX platforms.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=889123&group_id=39428&atid=425190">Feature Request #889123</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a crash problem introduced in 3.1.1, caused by a pair of uninitialized
                    pointers.  The crash was possible on all platforms but would only happen
                    if the Wrapper was started without any arguments.  It would not affect
                    users running the Wrapper normally.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1018481&group_id=39428&atid=425187">Bug #1018481</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem with the run as user feature of the shell script on Solaris.
                    Needed to be using /usr/xpg4/bin/id rather than /usr/bin/in if available.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=1024008&group_id=39428&atid=425187">Bug #1024008</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Replace calls to usleep with nanosleep on platforms where it is available.
                    This was to fix an occasional hang on a specific Solaris machine.  It would
                    occasionally hang on calls to usleep.  From research, it appears that usleep
                    has problems when signals are encountered while sleeping.  Still testing
                    whether or not this change solved the problem.
                </p>
            
</li>
            
<li>
                
<p>
                    Upgrade the version of <a href="http://ant.apache.org/">Ant</a>
                    included with source releases to 1.6.2 to fix some problems generating
                    jni headers when building with Java 1.4.2.
                </p>
            
</li>
            
<li>
                
<p>
                    Upgrade the version of <a href="http://cocoon.apache.org/">Cocoon</a>
                    included with source releases to 2.0.4 to fix some problems generating
                    documentation using Java 1.4.2.
                </p>
            
</li>
            
<li>
                
<p>
                    Display a warning if the exit status of a JVM process ever returns the
                    STILL_ACTIVE status on Windows.  There was no known problem here, just
                    noticed it while looking over the code.
                </p>
            
</li>
            
<li>
                
<p>
                    Display a descriptive error message on Windows if the the JVM process crashes
                    due to an uncaught exception in native JVM code.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a test for invalid jvm arguments set using the
                    <a href="prop-java-additional-n.html">wrapper.java.additional.&lt;n&gt;</a>
                    properties.  Invalid arguments could cause the Wrapper startup to fail in
                    non obvious ways if they are mistaken by the JVM as the main class.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="3.1.1"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.1.1: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Modified the way libwrapper.so is built on Solaris and Linux so that it
                    no longer statically links its required libraries.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a file handle leak when calling WrapperManager.getUser or
                    WrapperManager.getInteractiveUser on Windows platforms.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem introduced in 3.1.0 where the JVM would not be restarted
                    correctly if it quit after a ping timeout to let the Wrapper resynch and
                    restart it.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where CTRL-C was not being handled correctly if the console
                    was configured to be shown when running as an NT service.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where signals fired at UNIX versions of the wrapper were
                    not being handled correctly when the tick timer was being used.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a synchronization problem in the logging code which would
                    occassionally cause the Wrapper to crash with an Access Violation.
                    The problem was only encountered when the tick timer was enabled,
                    and was only seen on multi-CPU systems.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=949877&group_id=39428&atid=425187">Bug #949877</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem when using the tick timer where the Wrapper would sometimes
                    exit on startup due to an uncaught SIGALRM.  Only reported on multi-CPU
                    Solaris systems.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the Wrapper would sometimes hang on shutdown if
                    another thread called System.exit while the Wrapper was shutting down.
                    <a href="http://sourceforge.net/tracker/?func=detail&aid=955248&group_id=39428&atid=425187">Bug #955248</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem introduced in 3.1.0 where a very very large CPU timeout
                    warning message was being displayed if the system time was set back
                    while using the default system timer.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new property, <a href="prop-anchorfile.html">wrapper.anchorfile</a>,
                    which makes it possible to cause the Wrapper to shutdown by deleting
                    an anchor file.  The UNIX sh script has been modified to optionally make
                    use of this feature.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a debug message at startup which makes it clear which timer is being
                    used.
                </p>
            
</li>
            
<li>
                
<p>
                    A Windows user reported that using forward slashes in the path the log
                    file was failing.  Avoid this problem by always converting '/' to '\'
                    in the <a href="prop-logfile.html">wrapper.logfile</a> property
                    on Windows.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where it was not possible disable the wrapper log file as
                    documented in the <a href="prop-logfile.html">wrapper.logfile</a>
                    property.  Most likely broken way back in version 2.2.5.
                </p>
            
</li>
            
<li>
                
<p>
                    Add some additional error checks after calls to control the pipe between
                    the JVM and Wrapper as well as improving the messages around other socket
                    related error messages.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem on some HP-UX systems were not working correctly because
                    the EAGAIN and EWOULDBLOCK constants are not equal with some compilers.
                </p>
            
</li>
            
<li>
                
<p>
                    Change some of the defaults in the src/conf/wrapper.conf.in file which
                    ships with the Wrapper to avoid confusion with new users.
                </p>
            
</li>
            
<li>
                
<p>
                    Rewrote the routine which reads and logs console output from the JVM
                    for Windows versions.  Internal buffers are now scaled dynamically,
                    fixing a problem where long lines were being wrapped at 1024 characters.
                    This rewrite also resulted in a 4 fold increase in speed when the JVM is
                    sending large quantities of output to the console.
                </p>
            
</li>
            
<li>
                
<p>
                    Increase debug output on UNIX platforms when a signal is caught.  When
                    possible, information about where the signal came from is now logged.
                </p>
            
</li>
            
<li>
                
<p>
                    Modified the way log output from within signal handlers is handled so it
                    is now queued and then logged by the main event loop.
                </p>
            
</li>
            
<li>
                
<p>
                    Back out a 3.1.0 change where a JVM that had failed to exit cleanly was
                    sent a SIGTERM prior to a SIGKILL.  The SIGTERM made no difference and
                    slowed down the forced shutdown.  A modification to the event loop made
                    the functionality more difficult to implement.
                </p>
            
</li>
            
<li>
                
<p>
                    Add the ability to set the user that the Wrapper and its JVM will run as
                    from within the sh script on UNIX platforms.
                </p>
            
</li>
            
<li>
                
<p>
                    Add an icon resource to the Wrapper binary on Windows versions.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a typo in the UNIX sh script which caused an extra slash to be included
                    in the path of the pid file.  Was not causing any known problems.
                </p>
            
</li>
            
<li>
                
<p>
                    Added support for 64-bit HP-UX.  Big thanks to Venkatesh Sellappa for
                    supplying the patch.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a deadlock problem introduced in 3.1.0 with some FreeBSD systems.  Not
                    all users were experiencing it, but those who did were able to reliably
                    reproduce the problem.  The problem appears to have been caused by
                    <a href="http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/64313">FreeBSD bug #kern/64313</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Make the signal handling variables in the wrapper native library volatile.
                    Directly this was to fix a compiler warning on HP-UX64 systems but it
                    should also make the calls more efficient.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="3.1.0"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.1.0: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    The <a href="license.html">license</a> was revised for this version
                    to include a copyright omission.  This change is to be retroactively applied
                    to all versions of the Java Service Wrapper starting with version 3.0.0.
                    The changes should have no effect on users.
                </p>
            
</li>
            
<li>
                
<p>
                    The Online documentation and web site were both reworked.  The logo has
                    been updated so that Duke is no longer used.  The new online
                    <a href="http://wrapper.tanukisoftware.org">site</a> now
                    has the ability for users to append comments to any page.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new batch file which accepts commands like the UNIX shell script.
                    The new file is offered as an alternative to the default batch files, and
                    can be found at <tt>src/bin/AppCommand.bat.in</tt>.
                    Thanks to Mike Castle for donating the new script.  See the new
                    <a href="launch-win.html#command">Command-Based Script</a>
                    section for more information.
                </p>
            
</li>
            
<li>
                
<p>
                    The Windows version of the Wrapper was not correctly registering that it
                    would accept SHUTDOWN messages when running as a service.  The Wrapper
                    was getting the message anyway so this should not change functionality.
                    Thanks to Jason Tishler for noticing this and sending in a patch.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new property, <a href="prop-native-library.html">wrapper.native_library</a>,
                    which can be used to specify the base name of the native library which is
                    loaded by the WrapperManager class.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the WrapperManager class so it now stores references to System.out
                    and System.err on initialization and always writes to those stored streams.
                    This makes sure that all Wrapper console output always goes to the
                    wrapper.log file even if user code overrides those streams with calls to
                    System.setOut and System.setErr.  This was necessary to prevent deadlocks
                    in such user code from affecting the functionality of the Wrapper.
                </p>
            
</li>
            
<li>
                
<p>
                    Fixed a problem where some environment variables where not being correctly
                    loaded from the system registry when running as an NT service.  Big thanks
                    to Eric Smith for tracking this down and submitting a patch.  It turns out
                    that the putenv function was not being used correctly.
                </p>
            
</li>
            
<li>
                
<p>
                    Modified the way the wrapper.conf file is loaded so it will now read the
                    contents correctly even if the line feeds in the file are incorrect for
                    the current platform.  Windows line feeds had been causing problems when
                    used on UNIX platforms.  
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=829896&group_id=39428&atid=425190">Feature Request #829896</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new property, <a href="prop-ntservice-console.html">wrapper.ntservice.console</a>,
                    which allows a console to be displayed when running as an NT service.
                </p>
            
</li>
            
<li>
                
<p>
                    Fixed a problem where the <a href="prop-request-thread-dump-on-failed-jvm-exit.html">request thread dump on failed JVM exit</a>
                    feature had never worked when running as an NT service.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=831775&group_id=39428&atid=425187">Bug #831775</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new property, <a href="prop-console-title.html">wrapper.console.title</a>,
                    which makes it possible to set the title of the console in which the Wrapper
                    is currently running.  This currently only works on Windows platforms.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new method, setConsoleTitle, to the
                    <a href="javadocs.html">WrapperManager</a> class which
                    enables the application to dynamically set the console title.  Like the
                    <a href="prop-console-title.html">wrapper.console.title</a>
                    property, this only works on Windows platforms.
                </p>
            
</li>
            
<li>
                
<p>
                    Improved the algorithm of the <a href="prop-request-thread-dump-on-failed-jvm-exit.html">request thread dump on failed JVM exit</a>
                    feature so that extremely large thread dumps will not be truncated when
                    the JVM is killed.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where CTRL-C was being ignored by the WrapperManager if a
                    WrapperListener is never registered.  This is not possible if the Wrapper
                    is being used correctly but never the less a user did come across it.
                </p>
            
</li>
            
<li>
                
<p>
                    Add some additional debug output to help identify the cause of problems
                    loading the native library.
                </p>
            
</li>
            
<li>
                
<p>
                    The WrapperManager class now checks to make sure that its current version
                    matches the version of the native library and Wrapper.  If there are any
                    discrepancies found then appropriate warnings will be displayed, but the
                    Application will still be allowed to start.  This was added to make obvious
                    the cause of problems resulting from mismatched versions.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new property <a href="prop-use-system-time.html">wrapper.use_system_time</a> system time.  By setting this
                    property to false, the Wrapper will start using a new experimental timer
                    which uses a background thread to manage time rather than the system time.
                    This has a number of advantages over using the system time and should give
                    most users even more reliable behavior when the system is under high load
                    or there are changes being made to the system time.  The timer is very
                    critical to the operation of the Wrapper so the old behavior is left as
                    the default for the time being until this feature has had the chance to be
                    "time" tested.  If all goes well then this will be enabled as the default
                    in a future version of the Wrapper.
                    A pair of related properties, <a href="prop-use-system-time.html#prop-timer-fast-threshold">wrapper.timer_fast_threshold</a> and
                    <a href="prop-use-system-time.html#prop-timer-slow-threshold">wrapper.timer_slow_threshold</a>
                    were also added to aid in debugging.
                </p>
            
</li>
            
<li>
                
<p>
                    Rework the logging code so it is now thread safe.  The addition of the
                    timer thread means that there is now more than a single thread accessing
                    that code.  This was causing problems as the two threads tried to use the
                    same buffers.  As part of this change, a new format variable 'D' was added
                    to display the thread which is doing the logging.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where a thread dump would be invoked if the
                    <a href="prop-request-thread-dump-on-failed-jvm-exit.html">request thread dump on failed JVM exit</a>
                    was enabled and the user forced an immediate shutdown by pressing CTRL-C
                    more than once.
                </p>
            
</li>
            
<li>
                
<p>
                    Add getUser and getInteractiveUser methods to the <a href="javadocs.html">WrapperManager</a>
                    class to make it possible for user code to query information about the user
                    running Wrapper or the user who is interacting with the Wrapper and its JVM.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=812175&group_id=39428&atid=425190">Feature Request #812175</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    The Wrapper will now always exit with the exit code used to terminate the JVM
                    whether System.exit is used or <a href="javadocs.html">WrapperManager.stop</a>.
                    When running as an NT service the Wrapper now correctly returns the correct
                    exit code to the service manager so failure recovery tools should now work
                    correctly.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=852491&group_id=39428&atid=425190">Feature Request #852491</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a status command to the UNIX shell script which can be used to find out
                    whether or not the wrapper is currently running.  Patch submitted by
                    Joseph Benavidez.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the WrapperSimpleApp and WrapperStartStopApp so that the main method
                    of a class is located even if it exists in a parent class rather than the
                    class specified.
                </p>
            
</li>
            
<li>
                
<p>
                    To make debugging classpath problems easier, the Wrapper now verifies all
                    classpath entries before launching a JVM and logs debug level warnings for
                    any entries that do not exist.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where it was possible to define a zero length filter that would
                    trigger on any output.
                </p>
            
</li>
            
<li>
                
<p>
                    Add some additional debug output to make it easier to debug startup,
                    shutdown and restart problems.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the way the Wrapper forcibly kills a frozen JVM on UNIX platforms so
                    that it now sends a SIGTERM, waits up to 5 seconds, then sends a SIGKILL.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new <a href="prop-java-library-path-append-system-path.html">wrapper.java.library.path.append_system_path</a>
                    which will cause the Wrapper to append the system path to the generated
                    library path.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=917902&group_id=39428&atid=425190">Feature Request #917902</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where spaces around the '=' character of a property definition
                    were rendering the property invisible to the Wrapper.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=916001&group_id=39428&atid=425187">Bug #916001</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the first ping timeout after the JVM was started was
                    still hard coded at 30 seconds.  This was causing a combination of large
                    values of <a href="prop-ping-interval.html">wrapper.ping.interval</a>
                    and <a href="prop-ping-timeout.html">wrapper.ping.timeout</a> to fail.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the JVM would fail to shutdown cleanly if the Wrapper
                    was asked to stop too soon after launching a JVM.  This was leading to the
                    JVM being killed after the shutdown timeout expired.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=917281&group_id=39428&atid=425187">Bug #917281</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Added an adviser which will print out explanatory messages to the console
                    and wrapper log file when the Wrapper encounters a commonly made
                    configuration mistake.  This is designed to cut down on support requests
                    by new users.  Can be disabled using the
                    <a href="prop-adviser.html">wrapper.adviser</a> property.
                </p>
            
</li>
            
<li>
                
<p>
                    The bash script and the realpath utility have been deprecated since version
                    3.0.3.  They have been removed in this release.  The sh script is recommended
                    on all UNIX platforms, and the realpath utility which was used by pre-3.0.3
                    bash and sh scripts has not been used since.
                </p>
            
</li>
            
<li>
                
<p>
                    Add the <a href="prop-startup-delay.html">wrapper.startup.delay</a>
                    property along with console and service specific variants which make it
                    possible to configure a delay between the Wrapper being launched and the
                    first JVM being launched.
                </p>
            
</li>
            
<li>
                
<p>
                    Promote the <a href="prop-debug.html">wrapper.debug</a> property back
                    from being "deprecated".  It has continued to be useful and deserved
                    documentation and official status.
                </p>
            
</li>
            
<li>
                
<p>
                    Add <a href="prop-on-exit-n.html">wrapper.on_exit.&lt;n&gt;</a>
                    properties to control what happens when a exits based on the exit code.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the way calls to System.in.read() are handled so that they now block
                    rather than throwing an exception.  Currently, System.in can not be used with
                    the Wrapper because of the way I/O is passed between the Wrapper and JVM.
                </p>
            
</li>
            
<li>
                
<p>
                    Modified the Windows batch files to fix a problem where the path to the
                    Wrapper.exe contained more than one "/bin".  The new batch files are much
                    simpler and should be easier to customize if needed.  Bug #925308.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=925308&group_id=39428&atid=425187">Bug #925308</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Modified the <a href="prop-java-initmemory.html">wrapper.java.initmemory</a>
                    and <a href="prop-java-maxmemory.html">wrapper.java.maxmemory</a> properties
                    so that they now default to a value of 0 which causes the
                    <tt>-Xms</tt> and <tt>-Xmx</tt>
                    parameters to be omitted from the command used to launch Java.  This
                    will cause the JVM to use its own default values and also makes it possible
                    to specify the memory parameters using the
                    <a href="prop-java-additional-n.html">wrapper.java.additional.&lt;n&gt;</a>
                    properties.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a pair of <a href="props-envvars.html#default-definitions">environment variables</a>,
                    WRAPPER_FILE_SEPARATOR and WRAPPER_PATH_SEPARATOR, whose values are set to
                    either '/' and ':' or '\' and ';' on startup.  They can be used in the
                    wrapper.conf file to construct platform independent property values.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new <a href="prop-working-dir.html">wrapper.working.dir</a>
                    property which makes if possible to change the Wrapper and JVM's working
                    directory to a location other than the location of the Wrapper binary.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=738160&group_id=39428&atid=425190">Feature Request #738160</a>.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="3.0.5"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.0.5: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Added support for SGI Irix.  Big thanks to Andreas Wendt for supplying the
                    patch.
                </p>
            
</li>
            
<li>
                
<p>
                    Due to a bug in the build, the native library was not included in the 3.0.3
                    or 3.0.4 binary releases for OSX, building from source was working correctly.
                    This has been fixed and the build greatly simplified to avoid such problems
                    in the future.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=791755&group_id=39428&atid=425187">Bug #791755</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Changed the default location of the pid file generated by the sh script to
                    exist in the same directory as the sh script rather than in the /var/run.
                    This can be changed by setting the PIDDIR variable in the sh script used to
                    launch the Wrapper.
                </p>
            
</li>
            
<li>
                
<p>
                    Added support for the <a href="prop-pidfile.html">wrapper.pidfile</a>
                    property on the Windows platform.
                </p>
                
<div class="warning">
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td nowrap="nowrap" valign="top">
<p class="warninglabel">
<font color="#a00000"><b>WARNING</b></font>
</p>
</td><td><img width="10" src="images/spacer.gif"></td><td bgcolor="#dd8080" class="warningbody"><font color="#602222">
                    
<p>
                        (WINDOWS USERS) If you are using a wrapper.conf file that was created prior
                        to version 3.0.0 of the Wrapper, then you may have this property defined in
                        your configuration file.  You will get an error on startup if the specified
                        path does not exist.
                    </p>
                
</font></td>
</tr>
</table>
</div>
            
</li>
            
<li>
                
<p>
                    Added the <a href="prop-java-pidfile.html">wrapper.java.pidfile</a>
                    property which will cause the pid of the java process to be written to a
                    specified file.
                </p>
            
</li>
            
<li>
                
<p>
                    Stop clearing the file creation mask when the Unix version of the Wrapper is
                    run as a daemon process.  The file creation mask will not be inherited from
                    the process which launches the Wrapper.
                    <a href="http://sourceforge.net/tracker/?func=detail&atid=425187&aid=788849&group_id=39428">Bug #788849</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the sh script so it works on Linux, then deprecate the bash script.
                    This means that all Unix platforms can now use the same script to control
                    the Wrapper. Thanks to Mike Castle for the patch.  The bash script can still
                    be found in the release, but it is deprecated and will be removed in a
                    future version.
                </p>
            
</li>
            
<li>
                
<p>
                    Modified the sh script so it is now possible to set the nice priority in the
                    script configuration block.
                </p>
            
</li>
            
<li>
                
<p>
                    Remove output to System.out in the WrapperManager.requestThreadDump() method.
                    If some JVM threads were hung while accessing the System.out object,
                    attempting to do a thread a dump would cause the calling thread to hang as
                    well.  Thanks to Thomas Hart for the patch.
                </p>
            
</li>
            
<li>
                
<p>
                    Make it obvious in the log whether or not the Wrapper was started as a
                    daemon process on UNIX systems.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the way restarts requested from the JVM, or caused by a filter are
                    handled.  The Wrapper will no longer reset the restart count in either of
                    these cases.  If an application runs for longer than the
                    <a href="prop-successful-invocation-time.html">wrapper.successful_invocation_time</a>
                    timeout then the count will still be reset back to 0.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new <a href="prop-ignore-signals.html">wrapper.ignore_signals</a>
                    property which makes it possible to configure the Wrapper so it will ignore
                    CTRL-C, HALT and INT signals.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the WrapperManager.isLaunchedAsService() method on UNIX systems so it
                    now returns true if the Wrapper was launched with the
                    <a href="prop-daemonize.html">wrapper.daemonize</a> flag set.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a pair of MBean interfaces which allow the Wrapper to be controlled
                    using JMX.  See the new <a href="jmx.html">JMX</a> section in the
                    documentation for details.  Thanks to Sal Ingrilli for help with testing.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the Windows build so the Wrapper.exe and Wrapper.dll files can now
                    be built from <a href="http://ant.apache.org">Ant</a> if MSVC is
                    installed.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new <a href="prop-ping-interval.html">wrapper.ping.interval</a>
                    property which lets users control the frequency that the Wrapper pings the JVM.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=607768&group_id=39428&atid=425190">Feature Request #607768</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    When a JVM refuses to shutdown, the Wrapper can be configured to request a
                    thread dump using the <a href="prop-request-thread-dump-on-failed-jvm-exit.html">wrapper.request_thread_dump_on_failed_jvm_exit</a>
                    property.  The Wrapper was then waiting 1 second before the process was
                    killed.  This was not always long enough, resulting in a truncated thread
                    dump.  Increased the pause to 3 seconds.  
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=633761&group_id=39428&atid=425190">Feature Request #633761</a>.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a bug where <a href="prop-app-parameter-n.html">wrapper.app.parameter.&lt;n&gt;</a>
                    and <a href="prop-java-additional-n.html">wrapper.java.additional.&lt;n&gt;</a>
                    properties declared from the Windows
                    <a href="props-command-line.html">command line</a> were not correctly
                    handling spaces in their values.
                    <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=802139&group_id=39428&atid=425188">Support Request #802139</a>.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="3.0.4"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.0.4: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Fix a problem on UNIX systems where requesting a second thread dump any time
                    during the life of a single Wrapper process would cause the Wrapper and JVM
                    to shutdown rather than perform the thread dump.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where a, user without permission, attempting to stop an
                    application was able to delete the pid file even though they were unable
                    to stop the application itself.  This would make the scripts think that
                    the application was stopped when was actually still running.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where an application was being killed prematurely if it took
                    longer than 6 seconds to exit on its own.  The scripts now make sure that
                    an application always has enough time to shutdown cleanly.
                </p>
            
</li>
            
<li>
                
<p>
                    Improve the debug output so that packet codes are now shown using a name
                    rather than a raw number.
                </p>
            
</li>
            
<li>
                
<p>
                    Reduce the frequency of "Waiting to stop..." messages displayed when removing
                    an NT service that is currently running.  Decreased frequency from once per
                    second to once every five seconds.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a minor problem where the hour in the date returned by
                    WrapperInfo.getBuildTime() was not base 24.
                </p>
            
</li>
            
<li>
                
<p>
                    Added -t and -p command line options to the Windows version of the Wrapper
                    to sTart and stoP the Wrapper as an NT service.  This can be used in place
                    of "net start" and "net stop", which do not always work correctly when a
                    service takes a long time to start up or shutdown.  See the 
                    <a href="launch-win.html#exe">Launching Your Application (Win32)</a>
                    section for more details.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new method WrapperManager.stopImmediate which will cause the JVM to
                    exit immediately without calling any stop methods or shutdown hooks.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a new class, WrapperActionServer, which makes it easy to remotely control
                    the Wrapper remotely by opening a socket and sending commands.  See the
                    <a href="javadocs.html">javadocs</a> of the class for more
                    details.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix bug #744801.  A Java GUI was not being displayed when the application was
                    run in either console mode or as a service with <a href="prop-ntservice-interactive.html">wrapper.ntservice.interactive</a>
                    enabled.  This problem was introduced in Version 3.0.0 when using 1.2.x or
                    1.3.x versions of Java.  To use interactive services with 1.2.x or 1.3.x
                    versions of java, please review the documentation for the
                    <a href="prop-ntservice-interactive.html">wrapper.ntservice.interactive</a> property.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the JVM was not receiving CTRL-C and CTRL-CLOSE events
                    when running under the Wrapper on Windows.  This was not a problem in most
                    cases as the Wrapper was taking care of the processing of the events.  But
                    the WrapperListener.controlEvent() method was not being called as documented.
                </p>
            
</li>
            
<li>
                
<p>
                    Changed the way the WrapperSimpleApp and WrapperStartStopApp respond to
                    control events so that the JVM will respond and call WrapperManager.stop()
                    even when being controlled by the Wrapper.
                </p>
            
</li>
            
<li>
                
<p>
                    Modified the suggested behavior of the WrapperListener.controlEvent() method.
                    Users who have implemented the WrapperListener interface themselves should
                    review the <a href="javadocs.html">javadocs</a>.  The changes are not
                    required and applications will continue to function as they did before.
                </p>
            
</li>
            
<li>
                
<p>
                    Added support for DEC OSF1 (Alpha).  Big thanks to Andreas Wendt for
                    supplying the patch.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the sh and bash scripts were failing if the path to the
                    script contained spaces.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the JVM would sometimes hang when trying to shutdown if
                    the wrapper.key parameter was passed to the JVM while not being controlled
                    by the Wrapper.  This would happen if a user copied the command from the
                    Wrapper's debug output and attempted to run it as is without first removing
                    the wrapper.key parameter.
                </p>
            
</li>
            
<li>
                
<p>
                    Implement the ability to specify an NT service's load order group in response
                    to feature request #764143.  See the javadocs for the new
                    <a href="prop-ntservice-load-order-group.html">wrapper.ntservice.load_order_group</a>
                    property for details.
                </p>
            
</li>
            
<li>
                
<p>
                    Improve the error message displayed when the NT EventLog is full in response
                    to feature request #643617.  The EventLog output will now be disabled if any
                    errors are encountered while logging events.  This prevents the error from
                    repeating.
                </p>
            
</li>
            
<li>
                
<p>
                    Improve the error message displayed on Windows when the configured Java
                    command can not be executed or does not exist.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the Wrapper was leaving a pipe unclosed each time the JVM
                    was restarted on all UNIX platforms.  This was causing the Wrapper to run out
                    of file handles.   Bug #767267, discovered and patched by David Wong.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the '#' character, which signifies a comment, could not
                    be included in property values.  A double hash, '##' will now resolve into a
                    '#' within the property value.  Bug #777303.
                </p>
            
</li>
            
<li>
                
<p>
                    Added support for FreeBSD.  Big thanks to Alphonse Bendt for supplying the
                    patch.
                </p>
            
</li>
            
<li>
                
<p>
                    Make the <a href="prop-port.html">wrapper.port</a> property optional.
                </p>
            
</li>
            
<li>
                
<p>
                    Changed the way environment variables are loaded from the registry on Windows
                    platforms so users will no longer get warning messages about not being able
                    to handle very large environment variables.  Prior versions could only handle
                    environment variables whose expanded value was less than 2048 characters in
                    length.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem on UNIX platforms where a shell used to start the Wrapper
                    running as a detached process would hang when the user attempted to exit
                    the shell.  Thanks to Mike Castle for this patch.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="3.0.3"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.0.3: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Added support for Mac OS X.  Big thanks to Andy Barnett for supplying the
                    patch.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a segmentation fault on UNIX systems when the first console output
                    from the JVM was an empty line.  Thanks to Mike Castle for finding this.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where a 0 length malloc was being called if there were no
                    configured filters.  This was fine on most platforms but caused a crash
                    on MAC OS X.
                </p>
            
</li>
            
<li>
                
<p>
                    Rework the initialization of the bash and sh scripts so that they will
                    work correctly when referenced as symbolic links.  Thanks go out to Richard
                    Emberson for the code to resolve symbolic links.
                </p>
            
</li>
            
<li>
                
<p>
                    Deprecated the realpath binary in the *NIX distributions as it is no longer
                    used by the bash or sh scripts.  It is being left in for now so as not to
                    break the build scripts of other projects, but it will be removed after a
                    couple more releases.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a test to make sure that
                    <a href="prop-ntservice-interactive.html">wrapper.ntservice.interactive</a>
                    is not set to TRUE when an account is specified using
                    <a href="prop-ntservice-account.html">wrapper.ntservice.account</a>.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="3.0.2"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.0.2: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Modified the sh and bash scripts so that console log output is disabled by
                    default when the scripts are launched with the 'start' action.  Running with
                    the 'console' action will still send output to the console.  Logging to the
                    file is still enabled.
                </p>
            
</li>
            
<li>
                
<p>
                    Modified the wrapper.ping.timeout property so it also controls the ping
                    timeout within the JVM.  Before the timeout on responses to the Wrapper
                    could be controlled, but the ping timeout within the JVM was hardcoded to
                    30 seconds.
                </p>
            
</li>
            
<li>
                
<p>
                    In the last release, some work was done to avoid false timeouts caused by
                    large quantities of output.  On some heavily loaded systems, timeouts were
                    still being encountered.  Rather than reading up to 50 lines of input, the
                    code will now read for a maximum of 250ms before returning to give the main
                    event loop more cycles.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the values of environment variables set in the
                    configuration file were not correct when those values included references
                    to other environment variables.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a potential buffer overflow problem if configuration properties
                    referenced extremely large environment variables.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a potential problem where the inability to expand very large environment
                    variables would have led to an access violation when run as an NT service.
                </p>
            
</li>
            
<li>
                
<p>
                    Add some extra checks in the event where the native library can not be loaded
                    so that the WrapperManager can differentiate between the library missing and
                    not being readable due to permission problems.
                </p>
            
</li>
            
<li>
                
<p>
                    Remove the wrapper.ntservice.process_priority from the default wrapper.conf
                    because its use can produce unexpected results if used improperly.  Please
                    see the property documentation for details.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where environment variables in the registry which had no value
                    were causing the Wrapper to crash with an access violation.  This was
                    introduced in version 3.0.0 with the feature to load environment variables
                    from the registry.  The offending registry entry was WV_GATEWAY_CFG which
                    appears to be related to Oracle.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="3.0.1"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.0.1: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Fix a problem with the wrapper.disable_shutdown_hook.  Due to a typo in the
                    source, the property was being ignored.  This was broken in the 3.0.0
                    release.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem with the HP-UX release build reported by Ashish Gawarikar.
                </p>
            
</li>
            
<li>
                
<p>
                    Add the ability to set environment variables from within the configuration
                    file or from the command line.  See the
                    <a href="props-envvars.html">Environment Variables</a> section for
                    details.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem on HP-UX and AIX machines where the stop() function in the
                    shell scripts was causing a syntax error due to a conflict with a like named
                    shell command on those platforms.  This appears to be an issue with the
                    Korn shell on all platforms.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where very heavy output from the JVM can cause the Wrapper to
                    give a false timeout.  The Wrapper now only reads 50 lines of input at a time
                    to guarantee that the Wrapper's event loop always gets cycles.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem on UNIX versions where extra line breaks would sometimes be
                    added to the logged output when there was large amounts of output being
                    sent from the JVM.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where a large number of calls to WrapperManager.log()
                    immediately before the JVM exits could lead to the Wrapper incorrectly
                    reporting that the JVM exited unexpectedly.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="3.0.0"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 3.0.0: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Deprecated the com.silveregg.wrapper package in favor of
                    org.tanukisoftware.wrapper.  The classes and interfaces in the silveregg
                    package will continue to function, but migration to the new package should
                    be done when possible.  See the project
                    <a href="history.html">history</a> for details.
                </p>
            
</li>
            
<li>
                
<p>
                    On Windows systems change any forward slashes in the wrapper.java.command
                    property to back slashes.  Some users had reported having problems on
                    Windows XP.
                </p>
            
</li>
            
<li>
                
<p>
                    Implemented feature request #633178.  Added WrapperManager.requestThreadDump()
                    to force the current JVM to immediately perform a thread dump.
                </p>
            
</li>
            
<li>
                
<p>
                    Fixed bug where wrapper.logfile.maxsize was being set to 0 if the 'k' or 'm'
                    unit was omitted.
                </p>
            
</li>
            
<li>
                
<p>
                    Add the ability to specify an account name and password when installing an
                    NT service.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a property, wrapper.ntservice.interactive, which makes it possible to
                    control whether or not the Java process can gain access to the desktop while
                    it is running as an NT service.
                </p>
            
</li>
            
<li>
                
<p>
                    Add limited support for 1.2.x versions of Java.  Shutdown hooks are
                    supported until Java 1.3 so those functions will be disabled.  If the
                    application displays a GUI then Java 1.3 should be used as the GUI can not
                    currently be displayed when using Java 1.2.x.
                </p>
            
</li>
            
<li>
                
<p>
                    Made it possible to use the wrapper.pidfile property on all *nix platforms.
                    Please notice that the property has been removed from the default
                    wrapper.conf file.  The property is not needed when the wrapper is launched
                    with the bash shell script.  The sh shell script will set the wrapper.pidfile
                    when the wrapper is launched.  If either of the scripts provided with the
                    Wrapper distribution are used then the wrapper.pidfile should always be
                    removed from your wrapper.conf file.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new wrapper.daemonize property which, when set, will form the wrapper
                    process to be a detached non-session group leader.  This makes it possible to
                    launch the wrapper in such a way that it will not be terminated when the user
                    launching the process logs out.  This had been a problem on Solaris systems
                    when using the sh shell.  The default sh and bash scripts both make use of
                    this in the default.  Please update your scripts for use with this version.
                    Thanks to Rajiv Subrahmanyam for the patch.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the Wrapper was incorrectly counting the number of
                    non-daemon threads in BEA's JRockit Virtual Machine.  This was causing the
                    application to shutdown when the non-daemon thread count dropped to 1.
                </p>
            
</li>
            
<li>
                
<p>
                    Added support for building the wrapper on AIX and HP-UX systems.  Thanks for
                    the patches involved go out to Ashish Gawarikar and William Lee.
                </p>
            
</li>
            
<li>
                
<p>
                    Implement feature request #653131 to force the JVM to immediately exit when
                    the user presses CTRL-C multiple times.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a 'console' action to the bash and sh scripts to make it possible to
                    launch the Wrapper in the current shell process.  The 'start' task will launch
                    the Wrapper as a spawned daemon process.
                </p>
            
</li>
            
<li>
                
<p>
                    Fixed a problem where missing environment variables specified in classpath
                    or library path properties were not being handled correctly.
                </p>
            
</li>
            
<li>
                
<p>
                    Implemented feature request #676599 to enable the filtering of JVM output to
                    trigger JVM restarts or Wrapper shutdowns.  See the new
                    wrapper.filter.trigger.n and wrapper.filter.action.n properties.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the Win32 version of the Wrapper so that Environment Variables are
                    always read from the system registry when the Wrapper is run as a service.
                    By doing this, it makes it possible to change or add the system environment
                    variables and have them take effect without having to first reboot the
                    machine.
                </p>
            
</li>
            
<li>
                
<p>
                    Implemented cascading configuration files. See the
                    <a href="props-cascading.html">Cascading Configuration Files</a>
                    section for details.
                </p>
            
</li>
            
<li>
                
<p>
                    Changed the default value for the wrapper.java.initmemory property to be 3Mb.
                    The default on Windows and Linux JVMs is 2Mb, but the Solaris JVM requires
                    a minimum of 3Mb.  The minimum value accepted by the Wrapper was changed
                    from 8Mb to 1Mb to make it possible to reduce the footprint of applications
                    to what is possible without using the wrapper.
                </p>
            
</li>
            
<li>
                
<p>
                    Improve the parsing of configuration files so that leading and trailing white
                    space is now correctly trimmed.  It is also now possible to have comments at
                    the end of a line containing a property.
                </p>
            
</li>
            
<li>
                
<p>
                    Modify the way exceptions thrown by an application's main method are
                    presented to the user by the WrapperSimpleApp and WrapperStartStopApp so
                    they no longer look like a problem with Wrapper configuration.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="2.2.9"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 2.2.9: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Added a new property, wrapper.restart.delay, which allows the user to control
                    the amount of time to pause between a JVM exiting and a new JVM being
                    launched.
                </p>
            
</li>
            
<li>
                
<p>
                    Fixed bug #611024. The Wrapper would sometimes fail to start if
                    wrapper.max_failed_invocations is set to 1.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the number of non-daemon threads was not being calculated
                    in some cases.
                </p>
            
</li>
            
<li>
                
<p>
                    Implemented feature request #491443.  Environment variables referenced in the
                    wrapper.conf file will now be evaluated as the file is loaded.  The windows
                    syntax for environment variables is used on all platforms to make them
                    platform independent.
                </p>
            
</li>
            
<li>
                
<p>
                    Fixed a problem where the wrapper.conf was being open with both read and
                    write locks when a read lock is all that is needed.  Made the wrapper fail
                    on startup if another application held a read lock on the conf file.
                </p>
            
</li>
            
<li>
                
<p>
                    Modified the message displayed when the native library could not be found,
                    so that it is much more descriptive.  Hopefully it will cut down on questions
                    caused by configuration problems.
                </p>
            
</li>
            
<li>
                
<p>
                    Implemented feature request #613539. Modified the wrapper.java.library.path
                    to function like the wrapper.java.classpath.n properties so that multiple
                    directories can be specified in the library path in a platform independent
                    way.  The old property is still supported, but deprecated.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix Bug #632215.  The WrapperManager.isLaunchedAsService() method was always
                    returning false, even when run as a service under Windows.  On Linux, the
                    Wrapper is always run as a console app, so this method will always return
                    false.
                </p>
            
</li>
            
<li>
                
<p>
                    Improve the message thrown when user code attempts to access System.in from
                    within a JVM being controlled by the Wrapper.  System.in will not work
                    because the JVM is a spawned process.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="2.2.8"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 2.2.8: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Fixed a compiler problem on Solaris some systems.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new property, wrapper.cpu.timeout, which allows the user to control
                    how much time without receiving any CPU the Wrapper will tolerate before
                    displaying a warning message.  The CPU timeout feature was added in 2.2.7
                    but the default timeout of 10 seconds was not configurable.
                </p>
            
</li>
            
<li>
                
<p>
                    The Wrapper was only allowing 5 seconds between the JVM informing the
                    Wrapper that it was going to exit and the JVM process actually exiting.
                    This would cause the Wrapper to terminate the process prematurely in
                    cases where an application shutdown thread took longer than 5 seconds to
                    complete.  The Wrapper now allows wrapper.jvm_exit.timeout seconds for
                    the JVM process to exit on its own before being forcibly terminated.
                </p>
            
</li>
            
<li>
                
<p>
                    When there is a configuration problem or a resource is unavailable, a JVM
                    will sometimes exit abnormally very shortly after being launched.  This
                    can lead the the JVM being infinitely restarted due to a simple class
                    path misconfiguration.  To work around this, the Wrapper has always had
                    a hard limit of 5 restarts within a short period of time.  If the JVM
                    has been running for more than a few minutes, then the count was reset.
                    In this version, a new property. wrapper.max_failed_invocations was added
                    to allow the max value to be set.   The time period which the JVM must
                    now be running for the JVM launch to have been considered a success for
                    restart purposes is set using the new wrapper.successful_invocation_time
                    property.
                </p>
            
</li>
            
<li>
                
<p>
                    The number of advanced properties which most users do not need has been
                    increasing as the Wrapper has been made more and more flexible.  This
                    has been causing confusion in their usage by people who play with them
                    without first reading the documentation.  To solve this, the advanced
                    properties were removed from the default configuration file.  They still
                    function.  But users must now read to the advanced configuration
                    documentation to learn about their existence.  Added quite about to the
                    descriptions of these properties to hopefully clear up any confusion
                    about their usage.
                </p>
            
</li>
            
<li>
                
<p>
                    When the JVM exits abnormally, the Wrapper will pause for a few seconds
                    before starting another JVM.  If the user pressed CTRL-C during this
                    pause, a new JVM would still be launched.  The new JVM was exiting
                    immediately but it was a waste of time.  The Wrapper now recognizes the
                    event and aborts launching the new JVM.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a page to the documentation which shows inline javadocs.  This
                    will hopefully make it easier to navigate them as part of the full
                    documentation set.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new method to the WrapperManager which enables user code to
                    log at any log level.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new Helper class WrapperStartStopApp which allows users to easily
                    integrate applications like Tomcat which use a separate class to stop
                    the application.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a samples section to the documentation.  Just includes Tomcat 4
                    for now.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="2.2.7"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 2.2.7: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Fix a problem where the JVM was trying to reconnect the Wrapper as it was
                    being shutdown.  This was causing problems if the JVM was being restarted.
                </p>
            
</li>
            
<li>
                
<p>
                    Added support for the system being suspended to RAM or disk.  Also improved
                    wrapper performance when a system is under 100% load.  See the new example
                    output in the <a href="example.html">example</a> section. 
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the log output was not being directed to a file called
                    wrapper.log in the same directory as the Wrapper binary in the event that the
                    configured wrapper log file could not be accessed.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem where the Wrapper was not shutting down the JVM correctly when
                    all non daemon threads completed.   Normally a JVM will exit when all of its
                    non daemon threads have completed so this was causing some problems.
                    (Thanks to Jung Tamas)
                </p>
            
</li>
            
<li>
                
<p>
                    Added the ability to set the priority of the Wrapper and its JVM when run
                    as an NT service or console application.  The same thing can be better
                    achieved on Unix systems by using "nice" in the shell script used to launch
                    the Wrapper.  See the documentation for for details.
                </p>
            
</li>
            
<li>
                
<p>
                    JVM information was not being displayed correctly when the Wrapper native
                    library could not be loaded.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a new property to cause the wrapper to attempt to request a thread dump
                    when the JVM does not exit on request.
                </p>
            
</li>
            
<li>
                
<p>
                    Improved the documentation of the WrapperSimpleApp and WrapperListener classes.
                </p>
            
</li>
            
<li>
                
<p>
                    Adding a new property wrapper.shutdown.timeout to allow the user to extend the
                    length of time that an application is allowed to take shutting down.
                </p>
            
</li>
            
<li>
                
<p>
                    Rework the way the shutdown process works so that System.exit will never be
                    called before the stop method in WrapperListener has had a chance to complete.
                </p>
            
</li>
            
<li>
                
<p>
                    Add a Restart button to the TestWrapper application.
                </p>
            
</li>
            
<li>
                
<p>
                    Fix a problem on Unix versions where '%' characters in Java output would
                    sometimes cause the wrapper to crash.  Somehow missed getting this into the
                    last release.
                </p>
            
</li>
            
<li>
                
<p>
                    Added a test to make sure that WrapperManager.stop is not called recursively.
                </p>
            
</li>
            
<li>
                
<p>
                    Added support for building under Windows XP.  Prebuilt installations had
                    already been working.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="2.2.6"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 2.2.6: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Fix a problem where '%' characters in Java output would sometimes cause the
                    wrapper to crash.  (Thanks to Frode Moe)
                </p>
            
</li>
            
<li>
                
<p>
                    Added support for requesting a Java thread dump without shutting down the
                    Java process.
                </p>
            
</li>
            
<li>
                
<p>
                    Fixed a problem on windows where the java command was looking in the windows
                    system and system32 directories for the java executable before checking the
                    path when the full path to the java executable was not specified in the
                    configuration file.  This could lead to different JVM being run from the
                    Wrapper than was run if java -version was run from the command line.  The
                    Wrapper will now attempt to resolve the full java path using the PATH
                    environment variable.
                </p>
            
</li>
            
<li>
                
<p>
                    Added debug output showing Java version information when the JVM first starts.
                </p>
            
</li>
            
<li>
                
<p>
                    Modified c source to use /* */ style comments rather than // style comments.
                    Some people were having problems with some compilers.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="2.2.5"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 2.2.5: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Fixed bug issue when reading configuration files from Windows on Unix.
                </p>
            
</li>
            
<li>
                
<p>
                    Deprecated the wrapper.debug property in favor of loglevels.
                </p>
            
</li>
            
<li>
                
<p>
                    Added support for service descriptions for Win2k and XP.
                </p>
            
</li>
            
<li>
                
<p>
                    Added new logger functionality includes the following features: Loglevels like
                    Log4j, NT Eventlog support, UNIX syslog support and rolling log files.
                </p>
            
</li>
            
<li>
                
<p>
                    Added wildcard support for classpath entries in wrapper.conf.
                </p>
            
</li>
            
<li>
                
<p>
                    Added the ability to specify configuration properties from the command line.
                </p>
            
</li>
            
<li>
                
<p>
                    Changed the way NT services are installed so that a patched version of the
                    Wrapper.exe file no longer needs to be created to reference the wrapper.conf
                    file.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="2.2.4"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 2.2.4: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    The value of APP_NAME in the bash or sh scripts no longer needs to be the
                    same as the script.
                </p>
            
</li>
            
<li>
                
<p>
                    Added the ability to format and/or disable file logging and output to the
                    console.
                </p>
            
</li>
            
<li>
                
<p>
                    Set mode of executables in binary release tar files so that they can be run
                    without modification after being extracted.
                </p>
            
</li>
            
<li>
                
<p>
                    Fixed line feeds in release so that bat files are always CRLF, unix scripts
                    are always LF.  Other source files are always CRLF in ZIP archives and LF in
                    tar.gz archives.
                </p>
            
</li>
            
<li>
                
<p>
                    Make the build fail if Wrapper.exe or Wrapper.dll do not exist for Windows
                    builds.
                </p>
            
</li>
            
<li>
                
<p>
                    Added an empty wrapper.log to the releases so that the TestWrapper example
                    program runs out of the box.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="2.2.3"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 2.2.3: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Added template scripts and conf files for ease of integration with other
                    applications.
                </p>
            
</li>
            
<li>
                
<p>
                    Cleaned up the build.
                </p>
            
</li>
            
<li>
                
<p>
                    The WrapperSimpleApp method of launching applications was not working correctly
                    with applications whose main method did not return.
                </p>
            
</li>
            
<li>
                
<p>
                    Add sample scripts and wrapper.conf files in the bin and lib directories.
                    These scripts are used to start a sample application which runs out of the box.
                    See the new <a href="example.html">example.html</a> page in the
                    documentation for more details.
                </p>
            
</li>
            
<li>
                
<p>
                    Get rid of the platform specific directories in the bin and lib directories.
                </p>
            
</li>
            
<li>
                
<p>
                    Enable relative paths for Windows version.  In previous versions of Wrapper,
                    it was necessary to always use absolute paths because the working directory of
                    the wrapper would be then NT System32 directory when run as a service.
                </p>
            
</li>
            
<li>
                
<p>
                    On the windows version, the wrapper always sets the current working directory
                    to the location of the wrapper executable immediately after startup.
                </p>
            
</li>
            
<li>
                
<p>
                    Improvements to the documentation / web page.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="2.2.2"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 2.2.2: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Added HTML based documentation.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="2.2.1"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 2.2.1: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Added Linux and Solaris build files.
                </p>
            
</li>
            
<li>
                
<p>
                    Added Linux and Solaris documentation.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>
    
<a name="2.2.0"></a>
<table cellpadding="2" cellspacing="0" width="100%" border="0">
<tr>
<td bgcolor="#8888aa" class="sectionheader1" width="*"><font color="#eeeeee" size="4"><b>Version 2.2.0: Changes and bug fixes</b></font></td>
</tr>
<tr>
<td><img height="4" width="1" src="./images/spacer.gif"></td>
</tr>
<tr>
<td>
        
        
<ul>
            
<li>
                
<p>
                    Initial Public Release.
                </p>
            
</li>
        
</ul>
    
</td>
</tr>
</table>

</td>
</tr>
<tr>
<td align="right" id="author">
<p>
<i>by Leif Mortenson</i>
</p>
</td>
</tr>
</table>
<script language="JavaScript">//@@BODY_SECTION@@</script></td><td valign="bottom" width="4"><img height="496" width="4" src="images/BorderRight.png"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="right" height="4" colspan="2"><img height="4" width="500" src="images/BorderBottom.png"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellpadding="2" cellspacing="0" border="0" width="100%">
<tr>
<td id="copyright" align="left"><font color="#525D76" size="-1" face="arial,helvetica,sanserif"><i>
                            Copyright &copy;1999-2004 by <a href="http://www.tanukisoftware.com">Tanuki Software</a>.
                            All Rights Reserved.
                        </i></font></td><td align="right"><font color="#525D76" size="-1" face="arial,helvetica,sanserif"><i>
                            last modified:
                            <script language="JavaScript"> document.write(document.lastModified); </script></i></font></td>
</tr>
</table>
</body>
</html>
